package vip.liux.backend.domain.models.gen;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import vip.liux.backend.infrastructure.constants.GenConst;
import vip.liux.domain.entities.auditing.AuditedEntity;

@Getter
@Setter
@Entity
@Table(name = "gen_table_column")
public class GenTableColumn extends AuditedEntity<Long> {

    /**
     * 表ID
     */
    @Column(name = "`table_id`")
    private Long tableId;

    /**
     * 列名称
     */
    @Column(name = "`column_name`")
    private String columnName;

    /**
     * 列描述
     */
    @Column(name = "`column_comment`")
    private String columnComment;

    /**
     * 列类型(0:varchar 1:int 2:bigint 3:boolean 4:double 5:float 6:date 7:timestamp)
     */
    @Enumerated(EnumType.ORDINAL)
    @Column(name = "`column_type`")
    private GenConst.ColumnType columnType;

    /**
     * JAVA类型(0:String 1:Integer 2:Long 3:Boolean 4:Double 5:Float 6:Date 7:Timestamp)
     */
    @Enumerated(EnumType.ORDINAL)
    @Column(name = "`java_type`")
    private GenConst.JavaType javaType;

    /**
     * JAVA字段名
     */
    @Column(name = "`java_field`")
    private String javaField;

    /**
     * 是否主键（1是）
     */
    @Column(name = "`primary`")
    private boolean primary;

    /**
     * 是否自增（1是）
     */
    @Column(name = "`increment`")
    private boolean increment;

    /**
     * 是否必填（1是）
     */
    @Column(name = "`required`")
    private boolean required;

    /**
     * 是否为插入字段（1是）
     */
    @Column(name = "`insert`")
    private boolean insert;

    /**
     * 是否编辑字段（1是）
     */
    @Column(name = "`edit`")
    private boolean edit;

    /**
     * 是否列表字段（1是）
     */
    @Column(name = "`list`")
    private boolean list;

    /**
     * 是否查询字段（1是）
     */
    @Column(name = "`query`")
    private boolean query;

    /**
     * 查询方式(0:等于 1:不等于 2:大于 3:小于 4:范围)
     */
    @Enumerated(EnumType.ORDINAL)
    @Column(name = "`query_type`")
    private GenConst.QueryType queryType;

    /**
     * 显示类型(0:文本框 1:文本域 2:下拉框 3:复选框 4:单选框 5:日期控件)
     */
    @Enumerated(EnumType.ORDINAL)
    @Column(name = "`html_type`")
    private GenConst.HtmlType htmlType;

    /**
     * 字典类型
     */
    @Column(name = "`dict_type`")
    private String dictType;

    /**
     * 排序
     */
    @Column(name = "`sort`")
    private Integer sort;
}